package cn.ad.common;

import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * List通用对象排序工具类
 * @author helong.zhao
 * @date 2016-07-15
 */
public class ListSortUtil<T> {

    public void sort(List<T> list,final String method,final String type){
        Collections.sort(list, new Comparator<T>() {
            @Override
            public int compare(T a, T b) {
                int ret=0;
                try {
                    //获取m1的方法名
                    Method m1=a.getClass().getMethod(method,null);
                    //获取m2的方法名
                    Method m2=b.getClass().getMethod(method,null);
                    if (type!=null&&"desc".equals(type)){
                        ret=m2.invoke((T)b,null).toString().compareTo(m1.invoke((T)a,null).toString());
                    }else{
                        ret=m1.invoke((T)a,null).toString().compareTo(m2.invoke((T)b,null).toString());
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
                return ret;
            }
        });
    }
}
